
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import javax.swing.JOptionPane;

public class Index extends javax.swing.JFrame {

    Usuario usuario;
    int ID_NOTA_ABERTA;
    
    int GAMBIARRA_CAT;
    int GAMBIARRA_NOT;
    
    
    DateFormat df;
    
    
    private void LimparCampos()
    {
        ID_NOTA_ABERTA = -1;
        Editar(false);
        
        /*---(Criar Nota)---*/
        AtualizarCategoriasCriar();
        TextoCriarTituloNota.setText("");
        TextoCriarTextoNota.setText("");
        TextoCriarExpiracaoNota.setText("");
        TextoCriarExpiracaoNota.setEnabled(false);
        CheckCriarLembrete.setSelected(false);
        ComboCriarPrioridadeNota.setEnabled(false);
        ComboCriarCategoriaNota.setSelectedIndex(0);
        ComboCriarPrioridadeNota.setSelectedIndex(0);
        
        /*---(Pesquisar Nota)---*/
        AtualizarPesquisaNota();
        ComboPesquisarTipoNota.setSelectedIndex(0);
        ComboPesquisarPrioridadeNota.setSelectedIndex(0);
        TextoPesquisarExpiracaoNota.setText("dd/mm/aaaa");
        TextoPesquisarTextoNota.setText("");
        RotuloPesquizarExpiracaoNota.setVisible(false);
        
    }
    
    
    private void AtualizarPesquisaNota()
    {
        ComboPesquisarTituloNota.removeAllItems();
        ComboPesquisarTituloNota.addItem("---");
        
        ComboPesquisarCategoriaNota.removeAllItems();
        ComboPesquisarCategoriaNota.addItem("Todas");
        for (int i = 0; i < usuario.getTipos().length; i++)
            ComboPesquisarCategoriaNota.addItem(usuario.getTipos()[i].getId() + "-" + usuario.getTipos()[i].getTipo());
    }
    
    
    private void AtualizarCategoriasCriar()
    {
        ComboCriarCategoriaNota.removeAllItems();
        ComboCriarCategoriaNota.addItem("---");
        for (int i = 0; i < usuario.getTipos().length; i++)
            ComboCriarCategoriaNota.addItem(usuario.getTipos()[i].getId() + "-" + usuario.getTipos()[i].getTipo());
    }
    
    
    private void Editar(boolean estado)
    {
        BotaoCriarNotas.setEnabled(!estado);
        BotaoCriarCategorias.setEnabled(!estado);
        BotaoPesquisarNotas.setEnabled(!estado);
        BotaoPesquisarCategorias.setEnabled(!estado);
        BotaoPesquisarPesquisarNota.setEnabled(!estado);
        BotaoPesquisarAbrirNota.setEnabled(!estado);
        BotaoPesquisarEditarNota.setEnabled(!estado);
        
        ComboPesquisarTituloNota.setEnabled(!estado);
        TextoPesquisarTextoNota.setEnabled(estado);
        RotuloPesquizarExpiracaoNota.setVisible(false);
    }
    
    
    public Index() { initComponents(); }
    public Index(Usuario user)
    {
        initComponents();
        
        df = new SimpleDateFormat ("dd/MM/yyyy");
        df.setLenient (false);
        
        usuario = user;
        
        TipoNota nota1 = new TipoNota(0, "IFRN", "Notas do IFRN", new ArrayList<Nota>());
        usuario.adicionarTipo(nota1);
        TipoNota nota2 = new TipoNota(1, "Asd", "Notas do IFRN", new ArrayList<Nota>());
        usuario.adicionarTipo(nota2);
        TipoNota nota3 = new TipoNota(2, "Teste", "Notas do IFRN", new ArrayList<Nota>());
        usuario.adicionarTipo(nota3);
        TipoNota nota4 = new TipoNota(3, "Oi", "Notas do IFRN", new ArrayList<Nota>());
        usuario.adicionarTipo(nota4);
                                                GAMBIARRA_CAT = 4;
                                                GAMBIARRA_NOT = 0;
         
        
        /********************** Elementos **********************/
        RotuloNomeUsuario.setText("Bem Vindo, " + usuario.getNome());
        AtualizarCategoriasCriar();
        ComboCriarPrioridadeNota.setEnabled(false);
        TextoCriarExpiracaoNota.setEnabled(false);
        RotuloPesquizarExpiracaoNota.setVisible(false);
        
        /********************** Paineis ***********************/
        PainelCriarNota.setVisible(false);
        PainelCriarNota.setEnabled(false);
        PainelPesquisarNota.setVisible(false);
        PainelPesquisarNota.setEnabled(false);
        
    }
    
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        RotuloNomeUsuario = new javax.swing.JLabel();
        PainelBotoes = new javax.swing.JPanel();
        BotaoCriarCategorias = new javax.swing.JButton();
        BotaoCriarNotas = new javax.swing.JButton();
        BotaoPesquisarNotas = new javax.swing.JButton();
        BotaoPesquisarCategorias = new javax.swing.JButton();
        PainelCriarNota = new javax.swing.JPanel();
        TextoCriarTituloNota = new javax.swing.JTextField();
        RotuloCriarTituloNota = new javax.swing.JLabel();
        CheckCriarLembrete = new javax.swing.JCheckBox();
        RotuloCriarCategoriaNota = new javax.swing.JLabel();
        ComboCriarCategoriaNota = new javax.swing.JComboBox();
        RotuloCriarPrioridadeNota = new javax.swing.JLabel();
        ComboCriarPrioridadeNota = new javax.swing.JComboBox();
        RotuloCriarTextoNota = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        TextoCriarTextoNota = new javax.swing.JTextArea();
        BotaoCriarNota = new javax.swing.JToggleButton();
        BotaoCriarCancelarNota = new javax.swing.JButton();
        RotuloCriarDataExpiracao = new javax.swing.JLabel();
        TextoCriarExpiracaoNota = new javax.swing.JFormattedTextField();
        PainelPesquisarNota = new javax.swing.JPanel();
        RotuloPesquisarCategoriaNota = new javax.swing.JLabel();
        ComboPesquisarCategoriaNota = new javax.swing.JComboBox();
        RotuloPesquisarTipoNota = new javax.swing.JLabel();
        ComboPesquisarTipoNota = new javax.swing.JComboBox();
        RotuloPesquisarPrioridadeNota = new javax.swing.JLabel();
        ComboPesquisarPrioridadeNota = new javax.swing.JComboBox();
        RotuloPesquisarExpiracaoNota = new javax.swing.JLabel();
        TextoPesquisarExpiracaoNota = new javax.swing.JTextField();
        BotaoPesquisarPesquisarNota = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        ComboPesquisarTituloNota = new javax.swing.JComboBox();
        BotaoPesquisarAbrirNota = new javax.swing.JButton();
        RotuloPesquisarTituloNota = new javax.swing.JLabel();
        jScrollPane2 = new javax.swing.JScrollPane();
        TextoPesquisarTextoNota = new javax.swing.JTextArea();
        BotaoPesquisarEditarNota = new javax.swing.JButton();
        BotaoPesquisarCancelarNota = new javax.swing.JButton();
        RotuloPesquizarExpiracaoNota = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setResizable(false);

        RotuloNomeUsuario.setText("jLabel1");

        PainelBotoes.setBackground(new java.awt.Color(204, 255, 255));

        BotaoCriarCategorias.setText("Criar Categorias");

        BotaoCriarNotas.setText("Criar Notas");
        BotaoCriarNotas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BotaoCriarNotasActionPerformed(evt);
            }
        });

        BotaoPesquisarNotas.setText("Pesquisar Notas");
        BotaoPesquisarNotas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BotaoPesquisarNotasActionPerformed(evt);
            }
        });

        BotaoPesquisarCategorias.setText("Pesquisar Categorias");

        javax.swing.GroupLayout PainelBotoesLayout = new javax.swing.GroupLayout(PainelBotoes);
        PainelBotoes.setLayout(PainelBotoesLayout);
        PainelBotoesLayout.setHorizontalGroup(
            PainelBotoesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(PainelBotoesLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(BotaoCriarNotas)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(BotaoCriarCategorias)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(BotaoPesquisarNotas)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(BotaoPesquisarCategorias)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        PainelBotoesLayout.setVerticalGroup(
            PainelBotoesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(PainelBotoesLayout.createSequentialGroup()
                .addGap(6, 6, 6)
                .addGroup(PainelBotoesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(BotaoCriarNotas)
                    .addComponent(BotaoCriarCategorias)
                    .addComponent(BotaoPesquisarNotas)
                    .addComponent(BotaoPesquisarCategorias))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        PainelCriarNota.setBackground(new java.awt.Color(204, 204, 255));
        PainelCriarNota.setEnabled(false);

        RotuloCriarTituloNota.setText("Titulo");

        CheckCriarLembrete.setText("Usar como lembrete");
        CheckCriarLembrete.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                CheckCriarLembreteActionPerformed(evt);
            }
        });

        RotuloCriarCategoriaNota.setText("Categoria");

        RotuloCriarPrioridadeNota.setText("Prioridade");

        ComboCriarPrioridadeNota.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Min", "Med", "Max" }));

        RotuloCriarTextoNota.setText("Texto");

        TextoCriarTextoNota.setColumns(20);
        TextoCriarTextoNota.setRows(5);
        jScrollPane1.setViewportView(TextoCriarTextoNota);

        BotaoCriarNota.setText("Criar");
        BotaoCriarNota.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BotaoCriarNotaActionPerformed(evt);
            }
        });

        BotaoCriarCancelarNota.setText("Cancelar");
        BotaoCriarCancelarNota.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BotaoCriarCancelarNotaActionPerformed(evt);
            }
        });

        RotuloCriarDataExpiracao.setText("Data de Expiração");

        TextoCriarExpiracaoNota.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.DateFormatter(java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM))));

        javax.swing.GroupLayout PainelCriarNotaLayout = new javax.swing.GroupLayout(PainelCriarNota);
        PainelCriarNota.setLayout(PainelCriarNotaLayout);
        PainelCriarNotaLayout.setHorizontalGroup(
            PainelCriarNotaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(PainelCriarNotaLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(PainelCriarNotaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(PainelCriarNotaLayout.createSequentialGroup()
                        .addComponent(RotuloCriarTituloNota)
                        .addGap(4, 4, 4)
                        .addComponent(TextoCriarTituloNota, javax.swing.GroupLayout.PREFERRED_SIZE, 299, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(CheckCriarLembrete))
                    .addGroup(PainelCriarNotaLayout.createSequentialGroup()
                        .addComponent(RotuloCriarCategoriaNota)
                        .addGap(4, 4, 4)
                        .addComponent(ComboCriarCategoriaNota, javax.swing.GroupLayout.PREFERRED_SIZE, 278, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(RotuloCriarPrioridadeNota)
                        .addGap(4, 4, 4)
                        .addComponent(ComboCriarPrioridadeNota, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(RotuloCriarTextoNota)
                    .addGroup(PainelCriarNotaLayout.createSequentialGroup()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 323, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(24, 24, 24)
                        .addGroup(PainelCriarNotaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(RotuloCriarDataExpiracao)
                            .addComponent(TextoCriarExpiracaoNota, javax.swing.GroupLayout.PREFERRED_SIZE, 97, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(PainelCriarNotaLayout.createSequentialGroup()
                        .addComponent(BotaoCriarNota)
                        .addGap(6, 6, 6)
                        .addComponent(BotaoCriarCancelarNota)))
                .addContainerGap(29, Short.MAX_VALUE))
        );
        PainelCriarNotaLayout.setVerticalGroup(
            PainelCriarNotaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(PainelCriarNotaLayout.createSequentialGroup()
                .addGap(10, 10, 10)
                .addGroup(PainelCriarNotaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(PainelCriarNotaLayout.createSequentialGroup()
                        .addGap(4, 4, 4)
                        .addComponent(RotuloCriarTituloNota))
                    .addGroup(PainelCriarNotaLayout.createSequentialGroup()
                        .addGap(1, 1, 1)
                        .addComponent(TextoCriarTituloNota, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(CheckCriarLembrete))
                .addGap(9, 9, 9)
                .addGroup(PainelCriarNotaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(ComboCriarCategoriaNota, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(ComboCriarPrioridadeNota, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(PainelCriarNotaLayout.createSequentialGroup()
                        .addGap(3, 3, 3)
                        .addGroup(PainelCriarNotaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(RotuloCriarCategoriaNota)
                            .addComponent(RotuloCriarPrioridadeNota))))
                .addGap(6, 6, 6)
                .addComponent(RotuloCriarTextoNota)
                .addGap(6, 6, 6)
                .addGroup(PainelCriarNotaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(PainelCriarNotaLayout.createSequentialGroup()
                        .addComponent(RotuloCriarDataExpiracao)
                        .addGap(6, 6, 6)
                        .addComponent(TextoCriarExpiracaoNota, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(6, 6, 6)
                .addGroup(PainelCriarNotaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(BotaoCriarNota)
                    .addComponent(BotaoCriarCancelarNota)))
        );

        PainelPesquisarNota.setBackground(new java.awt.Color(153, 153, 255));
        PainelPesquisarNota.setEnabled(false);

        RotuloPesquisarCategoriaNota.setText("Categoria");

        RotuloPesquisarTipoNota.setText("Tipo");

        ComboPesquisarTipoNota.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Todos", "Nota", "Lembrete" }));
        ComboPesquisarTipoNota.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ComboPesquisarTipoNotaActionPerformed(evt);
            }
        });

        RotuloPesquisarPrioridadeNota.setText("Prioridade");

        ComboPesquisarPrioridadeNota.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Todas", "Min", "Med", "Max" }));

        RotuloPesquisarExpiracaoNota.setText("Data de Expiração");

        TextoPesquisarExpiracaoNota.setText("dd/mm/aaaa");

        BotaoPesquisarPesquisarNota.setText("Pesquisar");
        BotaoPesquisarPesquisarNota.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BotaoPesquisarPesquisarNotaActionPerformed(evt);
            }
        });

        jLabel1.setText("Titulo");

        ComboPesquisarTituloNota.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ComboPesquisarTituloNotaActionPerformed(evt);
            }
        });

        BotaoPesquisarAbrirNota.setText("Abrir");
        BotaoPesquisarAbrirNota.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BotaoPesquisarAbrirNotaActionPerformed(evt);
            }
        });

        RotuloPesquisarTituloNota.setText("Texto");

        TextoPesquisarTextoNota.setColumns(20);
        TextoPesquisarTextoNota.setRows(5);
        TextoPesquisarTextoNota.setEnabled(false);
        jScrollPane2.setViewportView(TextoPesquisarTextoNota);

        BotaoPesquisarEditarNota.setText("Editar");
        BotaoPesquisarEditarNota.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BotaoPesquisarEditarNotaActionPerformed(evt);
            }
        });

        BotaoPesquisarCancelarNota.setText("Cancelar");
        BotaoPesquisarCancelarNota.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BotaoPesquisarCancelarNotaActionPerformed(evt);
            }
        });

        RotuloPesquizarExpiracaoNota.setText("Expira em:");

        javax.swing.GroupLayout PainelPesquisarNotaLayout = new javax.swing.GroupLayout(PainelPesquisarNota);
        PainelPesquisarNota.setLayout(PainelPesquisarNotaLayout);
        PainelPesquisarNotaLayout.setHorizontalGroup(
            PainelPesquisarNotaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(PainelPesquisarNotaLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(PainelPesquisarNotaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(PainelPesquisarNotaLayout.createSequentialGroup()
                        .addComponent(RotuloPesquisarTipoNota)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(ComboPesquisarTipoNota, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(RotuloPesquisarCategoriaNota)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(ComboPesquisarCategoriaNota, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(PainelPesquisarNotaLayout.createSequentialGroup()
                        .addComponent(RotuloPesquisarTituloNota)
                        .addGap(53, 53, 53)
                        .addComponent(RotuloPesquizarExpiracaoNota)
                        .addGap(0, 0, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, PainelPesquisarNotaLayout.createSequentialGroup()
                        .addGroup(PainelPesquisarNotaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(PainelPesquisarNotaLayout.createSequentialGroup()
                                .addComponent(jScrollPane2)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED))
                            .addGroup(PainelPesquisarNotaLayout.createSequentialGroup()
                                .addComponent(jLabel1)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(ComboPesquisarTituloNota, javax.swing.GroupLayout.PREFERRED_SIZE, 252, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 33, Short.MAX_VALUE)
                                .addComponent(BotaoPesquisarAbrirNota, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(14, 14, 14)))
                        .addGroup(PainelPesquisarNotaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(BotaoPesquisarCancelarNota, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(BotaoPesquisarEditarNota, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                    .addGroup(PainelPesquisarNotaLayout.createSequentialGroup()
                        .addComponent(RotuloPesquisarPrioridadeNota)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(ComboPesquisarPrioridadeNota, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(RotuloPesquisarExpiracaoNota)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(TextoPesquisarExpiracaoNota, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(BotaoPesquisarPesquisarNota, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addContainerGap())
        );
        PainelPesquisarNotaLayout.setVerticalGroup(
            PainelPesquisarNotaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(PainelPesquisarNotaLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(PainelPesquisarNotaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(RotuloPesquisarCategoriaNota)
                    .addComponent(ComboPesquisarCategoriaNota, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(RotuloPesquisarTipoNota)
                    .addComponent(ComboPesquisarTipoNota, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(PainelPesquisarNotaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(ComboPesquisarPrioridadeNota, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(RotuloPesquisarPrioridadeNota)
                    .addComponent(RotuloPesquisarExpiracaoNota)
                    .addComponent(TextoPesquisarExpiracaoNota, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(BotaoPesquisarPesquisarNota))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(PainelPesquisarNotaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(ComboPesquisarTituloNota, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(BotaoPesquisarAbrirNota)
                    .addComponent(BotaoPesquisarCancelarNota))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(PainelPesquisarNotaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(RotuloPesquisarTituloNota)
                    .addComponent(RotuloPesquizarExpiracaoNota))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(PainelPesquisarNotaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(BotaoPesquisarEditarNota)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(RotuloNomeUsuario))
                    .addComponent(PainelBotoes, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(2, 2, 2)
                        .addComponent(PainelCriarNota, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(PainelPesquisarNota, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(63, 63, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(RotuloNomeUsuario)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(PainelBotoes, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(2, 2, 2)
                        .addComponent(PainelCriarNota, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(PainelPesquisarNota, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(46, 46, 46))))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    
    
    private void BotaoCriarNotasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BotaoCriarNotasActionPerformed
        LimparCampos();
        PainelCriarNota.setVisible(!false);
        PainelCriarNota.setEnabled(!false);
        PainelPesquisarNota.setVisible(false);
        PainelPesquisarNota.setEnabled(false);
    }//GEN-LAST:event_BotaoCriarNotasActionPerformed

    
    
    private void BotaoPesquisarNotasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BotaoPesquisarNotasActionPerformed
        LimparCampos();
        PainelCriarNota.setVisible(false);
        PainelCriarNota.setEnabled(false);
        PainelPesquisarNota.setVisible(!false);
        PainelPesquisarNota.setEnabled(!false);
    }//GEN-LAST:event_BotaoPesquisarNotasActionPerformed

    
    
    private void BotaoCriarCancelarNotaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BotaoCriarCancelarNotaActionPerformed
        LimparCampos();
    }//GEN-LAST:event_BotaoCriarCancelarNotaActionPerformed

    
    
    private void BotaoCriarNotaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BotaoCriarNotaActionPerformed
        if((ComboCriarCategoriaNota.getSelectedItem().toString() == "---") || (TextoCriarTituloNota.getText().equalsIgnoreCase("")) || (TextoCriarTextoNota.getText().equalsIgnoreCase("")))
            JOptionPane.showMessageDialog(null, "Preencha todos os campos!");
        else
        {
            String titulo = TextoCriarTituloNota.getText();
            String texto = TextoCriarTextoNota.getText();
            Date data = new Date(System.currentTimeMillis());
            int categoria = 0;
            for(int i = 0; i < ComboCriarCategoriaNota.getSelectedItem().toString().length()-1; i++)
                if(ComboCriarCategoriaNota.getSelectedItem().toString().substring(i, i+1).equals("-"))
                {
                    categoria = Integer.parseInt(ComboCriarCategoriaNota.getSelectedItem().toString().substring(0, i));
                    break;
                }

            if(CheckCriarLembrete.isSelected())
            {
                Lembrete lembrete;
                Date dataExpiracao = new Date();
                int prioridade = ComboCriarPrioridadeNota.getSelectedIndex() + 1;
                
                try
                {
                    dataExpiracao = df.parse(TextoCriarExpiracaoNota.getText());
                    if(dataExpiracao.before(data))
                        JOptionPane.showMessageDialog(null, "Data ja expirada!");
                    else
                    {
                        /*---*/
                            lembrete = new Lembrete(GAMBIARRA_NOT++, titulo, texto, data, categoria, dataExpiracao, prioridade);
                        /*---*/
                        for (int i = 0; i < usuario.getTipos().length; i++)
                            if((usuario.getTipos())[i].getId() == categoria)
                            {
                                (usuario.getTipos())[i].adicionarNota(lembrete);
                                JOptionPane.showMessageDialog(null, "Lembrete Cadastrado!");
                                LimparCampos();
                                break;
                            }
                    }
                }
                catch (ParseException ex)
                {
                    JOptionPane.showMessageDialog(null, "Data em formato incorreto!");
                }
            }
            else
            {
                /*---*/
                    Nota nota = new Nota(GAMBIARRA_NOT++, titulo, texto, data, categoria);
                /*---*/
                for (int i = 0; i < usuario.getTipos().length; i++)
                    if((usuario.getTipos())[i].getId() == categoria)
                    {
                        usuario.getTipos()[i].adicionarNota(nota);
                        JOptionPane.showMessageDialog(null, "Nota Cadastrada!");
                        LimparCampos();
                        break;
                    }
            }

        }
    }//GEN-LAST:event_BotaoCriarNotaActionPerformed

    
    
    private void CheckCriarLembreteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_CheckCriarLembreteActionPerformed
        if(CheckCriarLembrete.isSelected())
        {
            ComboCriarPrioridadeNota.setEnabled(true);
            TextoCriarExpiracaoNota.setEnabled(true);
        }
        else
        {
            ComboCriarPrioridadeNota.setEnabled(false);
            TextoCriarExpiracaoNota.setEnabled(false);
        }
    }//GEN-LAST:event_CheckCriarLembreteActionPerformed

    
    
    private void ComboPesquisarTituloNotaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ComboPesquisarTituloNotaActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_ComboPesquisarTituloNotaActionPerformed

    private void BotaoPesquisarPesquisarNotaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BotaoPesquisarPesquisarNotaActionPerformed
        ComboPesquisarTituloNota.removeAllItems();
        //ComboPesquisarTituloNota.addItem("---");
        
        int prioridade = ComboPesquisarPrioridadeNota.getSelectedIndex();
        int tipo = ComboPesquisarTipoNota.getSelectedIndex();
        int categoria = -1;
        if(!ComboPesquisarCategoriaNota.getSelectedItem().toString().equals("Todas"))
            for(int i = 0; i < ComboPesquisarCategoriaNota.getSelectedItem().toString().length()-1; i++)
                if(ComboPesquisarCategoriaNota.getSelectedItem().toString().substring(i, i+1).equals("-"))
                {
                    categoria = Integer.parseInt(ComboPesquisarCategoriaNota.getSelectedItem().toString().substring(0, i));
                    break;
                }
        
            Lembrete lembrete = new Lembrete();
            boolean condicao;
            
            Date data;
            
            try
            {
                data = df.parse(TextoPesquisarExpiracaoNota.getText());
            }
            catch (ParseException ex)
            {
                data = new Date(System.currentTimeMillis());
            }
            
            for(int i = 0; i < usuario.getTipos().length; i++)
                if( (categoria < 0) || (usuario.getTipos()[i].getId() == categoria))
                {
                    for(int j = 0; j < usuario.getTipos()[i].getNotas().length; j++)
                    {
                        condicao = ((tipo == 1) && !(usuario.getTipos()[i].getArrayNotas()[j] instanceof Lembrete)) ||
                                   ((tipo == 2) && ((usuario.getTipos()[i].getArrayNotas()[j] instanceof Lembrete) && 
                                    !((Lembrete)(usuario.getTipos()[i].getArrayNotas()[j])).getDataExpiracao().before(data) &&
                                    (((Lembrete)(usuario.getTipos()[i].getArrayNotas()[j])).getPrioridade() != 0)
                                    )) ||
                                   (tipo == 0);
                        if(condicao)
                            ComboPesquisarTituloNota.addItem(usuario.getTipos()[i].getNotas()[j]);
                    }
                }
        
        if(ComboPesquisarTituloNota.getItemCount() == 0)
            ComboPesquisarTituloNota.addItem("Vazio");
        
    }//GEN-LAST:event_BotaoPesquisarPesquisarNotaActionPerformed

    
    
    private void ComboPesquisarTipoNotaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ComboPesquisarTipoNotaActionPerformed
        /**/
    }//GEN-LAST:event_ComboPesquisarTipoNotaActionPerformed

    
    
    private void BotaoPesquisarCancelarNotaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BotaoPesquisarCancelarNotaActionPerformed
        LimparCampos();
    }//GEN-LAST:event_BotaoPesquisarCancelarNotaActionPerformed

    
    
    private void BotaoPesquisarAbrirNotaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BotaoPesquisarAbrirNotaActionPerformed
        if(!ComboPesquisarTituloNota.getSelectedItem().toString().equals("Vazio") && !ComboPesquisarTituloNota.getSelectedItem().toString().equals("---"))
        {
            int id = -1;
            
            for(int i = 0; i < ComboPesquisarTituloNota.getSelectedItem().toString().length()-1; i++)
                if(ComboPesquisarTituloNota.getSelectedItem().toString().substring(i, i+1).equals("-"))
                {
                    id = Integer.parseInt(ComboPesquisarTituloNota.getSelectedItem().toString().substring(0, i));
                    break;
                }
            
            for(int i = 0; i < usuario.getTipos().length; i++)
                for(int j = 0; j < usuario.getTipos()[i].getArrayNotas().length; j++)
                    if(usuario.getTipos()[i].getArrayNotas()[j].getId() == id)
                    {
                        ID_NOTA_ABERTA = usuario.getTipos()[i].getArrayNotas()[j].getId();
                        TextoPesquisarTextoNota.setText(usuario.getTipos()[i].getArrayNotas()[j].getTexto());
                        if(usuario.getTipos()[i].getArrayNotas()[j] instanceof Lembrete)
                        {
                            RotuloPesquizarExpiracaoNota.setText("Expira em: " + df.format(((Lembrete) usuario.getTipos()[i].getArrayNotas()[j]).getDataExpiracao()));
                            RotuloPesquizarExpiracaoNota.setVisible(true);
                        }
                        else
                        {
                            RotuloPesquizarExpiracaoNota.setVisible(false);
                        }
                        i = usuario.getTipos().length;
                        break;
                    }
            
            
        }
        else
        {
            JOptionPane.showMessageDialog(null, "Escolha uma nota!");
        }
    }//GEN-LAST:event_BotaoPesquisarAbrirNotaActionPerformed

    private void BotaoPesquisarEditarNotaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BotaoPesquisarEditarNotaActionPerformed
        if(ID_NOTA_ABERTA >= 0)
        {
            int i_id = ID_NOTA_ABERTA;
            int i_cat = 0;
            int id_cat = -1;
            
            for(int i = 0; i < usuario.getTipos().length; i++)
                for(int j = 0; j < usuario.getTipos()[i].getArrayNotas().length; j++)
                    if(usuario.getTipos()[i].getArrayNotas()[j].getId() == i_id)
                    {
                        id_cat = usuario.getTipos()[i].getId();
                        i_cat = i;
                        i_id = j;
                        i = usuario.getTipos().length;
                        break;
                    }
            
            TextoPesquisarTextoNota.setText((usuario.getTipos()[i_cat].getArrayNotas()[i_id]).getTexto());
            ComboPesquisarTituloNota.removeAllItems();
            ComboPesquisarTituloNota.addItem((usuario.getTipos()[i_cat].getArrayNotas()[i_id]).getTitulo());
            
            Editar(true);
            if((usuario.getTipos()[i_cat].getArrayNotas()[i_id]) instanceof Lembrete)
            {
                Lembrete lemb = (Lembrete) (usuario.getTipos()[i_cat].getArrayNotas()[i_id]);
                TextoPesquisarExpiracaoNota.setText(df.format(lemb.getDataExpiracao()));
                ComboPesquisarTipoNota.setSelectedIndex(2);
                ComboPesquisarPrioridadeNota.setSelectedIndex(lemb.getPrioridade());
            }
            else
            {
                TextoPesquisarExpiracaoNota.setText("dd/mm/aaaa");
                ComboPesquisarTipoNota.setSelectedIndex(1);
                ComboPesquisarPrioridadeNota.setSelectedIndex(0);
            }
            
            int index_cat = -1;
            for (int i = 0; i < ComboPesquisarCategoriaNota.getItemListeners().length; i++)
            {
                JOptionPane.showMessageDialog(null, "Categoria " + i + " - " + id_cat);
                for(int j = 0; j < ComboPesquisarCategoriaNota.getItemAt(i).toString().length()-1; j++)
                {
                    if(ComboPesquisarCategoriaNota.getSelectedItem().toString().substring(i, i+1).equals("-"))
                    {
                        index_cat = Integer.parseInt(ComboPesquisarCategoriaNota.getSelectedItem().toString().substring(0, i));
                        JOptionPane.showMessageDialog(null, "ID " + i);
                        break;
                    }
                }
                if(index_cat == id_cat)
                {
                    ComboPesquisarCategoriaNota.setSelectedIndex(i);
                    break;
                }
            }
        }
        else
        {
            JOptionPane.showMessageDialog(null, "Escolha uma nota!");
        }
    }//GEN-LAST:event_BotaoPesquisarEditarNotaActionPerformed
    
    
    
    
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Index.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Index.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Index.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Index.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Index().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton BotaoCriarCancelarNota;
    private javax.swing.JButton BotaoCriarCategorias;
    private javax.swing.JToggleButton BotaoCriarNota;
    private javax.swing.JButton BotaoCriarNotas;
    private javax.swing.JButton BotaoPesquisarAbrirNota;
    private javax.swing.JButton BotaoPesquisarCancelarNota;
    private javax.swing.JButton BotaoPesquisarCategorias;
    private javax.swing.JButton BotaoPesquisarEditarNota;
    private javax.swing.JButton BotaoPesquisarNotas;
    private javax.swing.JButton BotaoPesquisarPesquisarNota;
    private javax.swing.JCheckBox CheckCriarLembrete;
    private javax.swing.JComboBox ComboCriarCategoriaNota;
    private javax.swing.JComboBox ComboCriarPrioridadeNota;
    private javax.swing.JComboBox ComboPesquisarCategoriaNota;
    private javax.swing.JComboBox ComboPesquisarPrioridadeNota;
    private javax.swing.JComboBox ComboPesquisarTipoNota;
    private javax.swing.JComboBox ComboPesquisarTituloNota;
    private javax.swing.JPanel PainelBotoes;
    private javax.swing.JPanel PainelCriarNota;
    private javax.swing.JPanel PainelPesquisarNota;
    private javax.swing.JLabel RotuloCriarCategoriaNota;
    private javax.swing.JLabel RotuloCriarDataExpiracao;
    private javax.swing.JLabel RotuloCriarPrioridadeNota;
    private javax.swing.JLabel RotuloCriarTextoNota;
    private javax.swing.JLabel RotuloCriarTituloNota;
    private javax.swing.JLabel RotuloNomeUsuario;
    private javax.swing.JLabel RotuloPesquisarCategoriaNota;
    private javax.swing.JLabel RotuloPesquisarExpiracaoNota;
    private javax.swing.JLabel RotuloPesquisarPrioridadeNota;
    private javax.swing.JLabel RotuloPesquisarTipoNota;
    private javax.swing.JLabel RotuloPesquisarTituloNota;
    private javax.swing.JLabel RotuloPesquizarExpiracaoNota;
    private javax.swing.JFormattedTextField TextoCriarExpiracaoNota;
    private javax.swing.JTextArea TextoCriarTextoNota;
    private javax.swing.JTextField TextoCriarTituloNota;
    private javax.swing.JTextField TextoPesquisarExpiracaoNota;
    private javax.swing.JTextArea TextoPesquisarTextoNota;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    // End of variables declaration//GEN-END:variables
}
